// package com.ifp.opengate.boot.gateway.formatter.template;
//
// import com.ifp.core.data.DataMap;
// import com.ifp.core.exception.BaseException;
// import com.ifp.core.util.DataMapChangeUtil;
// import com.ifp.core.util.StringUtil;
// import com.ifp.gateway.GatewayConstants;
// import com.ifp.gateway.bean.MessageDefine;
// import com.ifp.gateway.formatter.IFormatter;
// import com.ifp.gateway.formatter.template.TemplateContent;
// import org.apache.commons.lang.StringUtils;
// import org.apache.velocity.Template;
// import org.apache.velocity.VelocityContext;
// import org.apache.velocity.app.Velocity;
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.beans.factory.annotation.Qualifier;
// import org.springframework.context.annotation.Lazy;
// import org.springframework.stereotype.Component;
//
// import java.io.StringWriter;
// import java.util.HashMap;
// import java.util.Iterator;
// import java.util.List;
// import java.util.Map;
//
/// **
// * @author limh
// *
// */
// @Component("templateFormatter")
// @Lazy(true)
// public class TemplateFormatter implements IFormatter<Map> {
// @Autowired
// @Qualifier("templateContent")
// public TemplateContent templateContent;
// /**
// * 字符编码
// */
// private String encoding = "UTF-8";
//
// @Override
// public Object format(Map headMap, Map dataMap, MessageDefine msgDefine) throws Exception {
// String channelId = StringUtil.getValue(headMap.get(GatewayConstants.CHANNEL_ID));
// String transCode = StringUtil.getValue(headMap.get(GatewayConstants.TRANS_CODE));
// if(StringUtil.hasText(channelId) && StringUtil.hasText(transCode)){
// String templateStr = templateContent.getRequestTemplateContent(channelId, transCode);
// if(null == templateStr) {
// throw new BaseException("template is not set! channelId:" + channelId + ",transCode:" + transCode);
// }
// Template template = Velocity.getTemplate(templateStr, encoding);
// VelocityContext context = new VelocityContext();
//
// Map paramMap = new HashMap(16);
//
// if(headMap instanceof DataMap){
// DataMapChangeUtil.dataMapToMap((DataMap)headMap, paramMap);
// }else{
// paramMap.putAll(dataMap);
// }
//
// if(dataMap instanceof DataMap){
// DataMapChangeUtil.dataMapToMap((DataMap)dataMap, paramMap);
// }else{
// paramMap.putAll(dataMap);
// paramMap.putAll(headMap);
// }
//
// Iterator it = paramMap.keySet().iterator();
// while (it.hasNext()) {
// String key = (String) it.next();
// Object value = paramMap.get(key);
// if(value == null){
// value = "";
// }
// if(value instanceof String){
// context.put(key, StringUtils.replace((String)value, "<", "&lt;"));
// }else if(value instanceof List){
// context.put(key, value);
// }else if(value instanceof Map){
// context.put(key, value);
// }
// }
// StringWriter writer = new StringWriter();
// template.merge(context, writer);
//
// return writer.toString();
// }else{
// throw new BaseException("channelId or transCode is null");
// }
// }
// public Map unformat(Map headMap, String recMsg, MessageDefine msgDefine) throws Exception {
// // TODO Auto-generated method stub
// return null;
// }
//
// public void unformat(Map headMap, Map dataMap, String recMsg, MessageDefine msgDefine) throws Exception{
//
// }
//
// public TemplateContent getTemplateContent() {
// return templateContent;
// }
//
// public void setTemplateContent(TemplateContent templateContent) {
// this.templateContent = templateContent;
// }
//
// public String getEncoding() {
// return encoding;
// }
//
// public void setEncoding(String encoding) {
// this.encoding = encoding;
// }
// }